--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / js / outboundSendQueue.js
Displaying Raw • Download
meshchatx/src/frontend/js/outboundSendQueue.js c0b0ddffd735a0d007c1be9a5e8563ec42fdafc0 (c0b0ddff) Text, 1.88 KB
T8b949e/**
* Serial outbound job queue: one job runs at a time so later messages reuse
* the route established while sending earlier ones to the same peer.
*/
Tff7b72function Te6edf3jobMatchesTb4b4b4(Te6edf3jobTb4b4b4, Te6edf3matchTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3job Tff7b72|| Tff7b72!Te6edf3matchTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3matchTb4b4b4.Te6edf3pendingHash Tff7b72&& Te6edf3jobTb4b4b4.Te6edf3pendingHash Tff7b72=== Te6edf3matchTb4b4b4.Te6edf3pendingHashTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3matchTb4b4b4.Te6edf3messageHash Tff7b72&& Te6edf3jobTb4b4b4.Te6edf3messageHash Tff7b72=== Te6edf3matchTb4b4b4.Te6edf3messageHashTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3matchTb4b4b4.Te6edf3cancelKey Tff7b72&& Te6edf3jobTb4b4b4.Te6edf3cancelKey Tff7b72=== Te6edf3matchTb4b4b4.Te6edf3cancelKeyTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72export Tff7b72function Te6edf3createOutboundQueueTb4b4b4(Te6edf3processJobTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3queue Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72let Te6edf3running Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72let Te6edf3currentJob Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72async Tff7b72function Te6edf3runTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3runningTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3running Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72while Tb4b4b4(Te6edf3queueTb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3job Tff7b72= Te6edf3queueTb4b4b4.Te6edf3shiftTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3jobTff7b72?Tb4b4b4.Te6edf3cancelledTb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Te6edf3currentJob Tff7b72= Te6edf3jobTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Te6edf3processJobTb4b4b4(Te6edf3jobTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3currentJob Tff7b72=== Te6edf3jobTb4b4b4) Tb4b4b4{
Te6edf3currentJob Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72finally Tb4b4b4{
Te6edf3running Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3currentJob Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Tb4b4b4{
Te6edf3enqueueTb4b4b4(Te6edf3jobTb4b4b4) Tb4b4b4{
Te6edf3queueTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3jobTb4b4b4)Tb4b4b4;
Tff7b72void Te6edf3runTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3cancelJobTb4b4b4(Te6edf3matchTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3currentJob Tff7b72&& Te6edf3jobMatchesTb4b4b4(Te6edf3currentJobTb4b4b4, Te6edf3matchTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3currentJobTb4b4b4.Te6edf3cancelled Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3job Tff7b72of Te6edf3queueTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3jobMatchesTb4b4b4(Te6edf3jobTb4b4b4, Te6edf3matchTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3jobTb4b4b4.Te6edf3cancelled Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3get Te6edf3lengthTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3queueTb4b4b4.Te6edf3lengthTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3get Te6edf3isRunningTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3runningTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────